이전 MATLAB UI를 이용한 작업 수행하기 편에서는 UI를 이용해 데이터를 불러오고 그래프를 그려보았다. 그리고, 그려본 데이터의 x 축과 y 축의 이름을 수정한 뒤 그래프를 “png” 파일로 저장해보았다.
이번 시간에는 MATLAB 명령어들을 이용해 위 작업을 진행해보고자 한다. UI를 다루는 것에 비해 어려울 수도 있지만, 나중에는 손으로 직접 하나 하나 수행하기에는 어려운 작업들을 자동화시켜주기 위해서는 명령어를 필수적으로 사용해야 한다.
Command Window 사용해보기
간단 사용 방법 소개
명령어를 사용하는 방법 중 하나는 Command Window에 명령어를 직접 입력하는 것이다. Command Window에서 아래와 같이 입력하고 엔터를 쳐보자.
>> a = 1
그러면 우측 Workspace에 “a”라는 변수가 생성되고 “1”이라는 값이 정의되는 것을 알 수 있다.
참고로 명령어 마지막에 세미콜론(“;”)을 붙이면 명령어를 수행한 뒤에 명령창에 명령어를 입력하여 나온 결과물을 출력하지 않는다. 즉, Workspace에 “a”라는 변수에 “1”이 할당되기만 하고 Command Window에서 더 이상의 결과를 “굳이” 보여주지 않는다.
또, 위의 명령어에서 등호(“=”)는 같다는 의미가 아니라 “a” 라는 이름을 가지는 변수에 “1’이라는 값을 “할당(assign)” 하라는 의미를 지닌다. 따라서 이제 “a”라는 변수는 숫자에 관한 정보를 할당 받았으며 값은 “1”이다. a라는 변수 옆의 아이콘을 보면 아래와 같은 모양인 것을 알 수 있다. 이는 이 변수가 “numeric” 타입 변수임을 의미한다.
이 외에도 Command Window에서는 다양한 명령어를 입력할 수 있다. 예를 들어 아래와 같이 “logo”라고 입력하면 MATLAB logo가 도시(plot)되는 것을 알 수 있다.
이제 명령창에 아래와 같이 입력해서 Workspace와 Command Window를 지우도록 하자.
>> clear
>> close all
>> clc
참고로, Command Window에서 윗방향 방향키를 누르면 지금까지 입력한 명령어 기록이 나온다.
Command Window에서 데이터 불러오고 plot 하기
이전 시간에 저장한 “my_matfile.mat” 파일이 있다면 불러오도록 하자. 만약, 이 파일을 못찾겠다면 아래의 링크를 통해 받도록 하자.
“my_matfile.mat” 파일을 불러오기 위해선 현재 경로를 “my_matfile.mat” 이 포함된 경로로 이동하여 파일을 드래그 & 드랍하거나 명령창에 아래와 같이 입력하면 된다. 가능하면 명령창에 명령어를 입력하여 파일을 불러와보자.
>> load("my_matfile.mat")
이전 MATLAB UI를 이용한 작업 수행하기 편에서는 UI를 이용해 plot을 수행했다. 이전 편에서 plot 했던 것 처럼 “year1”과 “price1”을 차례대로 클릭한 뒤 plot 버튼을 눌러보자. 그러면, 명령창에 아래와 같이 동등한 과정을 수행하기 위해 필요한 명령어를 확인할 수 있다.
명령어를 잘 보면 아래와 같은데,
>> plot(year1, price1)
“plot”이라는 함수를 사용했고, 두 개의 numeric 타입 변수가 차례대로 들어간 것을 알 수 있다. UI를 통해 만든 figure는 닫고 직접 명령창에 “plot(year1, price1)” 을 입력해 동일한 그래프가 그려지는지 확인해보자.
또, 이번에는 아래와 같이 명령어를 입력해보자.
>> plot(year1, price1);
>> hold on;
>> plot(year1, price2);
“hold on”은 그래프를 지우지 말고 다음 번 그려질 그래프를 기존의 그래프 위에 올려서 계속해서 그리게 해달라는 명령어이다. 위 커맨드를 모두 완료하면 이전 MATLAB UI를 이용한 작업 수행하기 편에서 그렸던 것과 같이 두 개의 서로 다른 그래프가 하나의 figure 창에 그려진 것을 확인할 수 있을 것이다.
또, 이번엔 x축과 y축의 라벨을 입력해보자. 창을 끄지 말고 아래와 같이 커맨드를 입력하자.
>> xlabel("year")
>> ylabel("price")
이번에는 “xlabel” 과 “ylabel” 함수를 이용했음을 알 수 있다. 그리고 앞선 “plot” 함수와 다른 점은 입력에 쌍따옴표로 양끝을 표기한 “string” 변수가 입력으로 사용되었음을 알 수 있다.
그렇다면 “plot”과 “xlabel” 이 각각 어떤 입력을 받는지 사용자가 어떻게 알 수 있을까? 함수들의 입력 조건은 MATLAB을 설계한 개발자들이 정한 것이며 개발자들이 만들어둔 설명 자료에 이러한 사항들이 나와있다. 이를 확인하기 위해 명령창에서 아래와 같이 입력해보자.
>> help plot
그러면 아래와 같이 함수들에 대한 설명 자료가 나오게 된다. 설명자료에서 말하는 바와 같이 “X”, “Y”가 벡터 혹은 행렬로 지정되어야 한다는 점에서 입력 변수가 numeric type이어야 함을 알 수 있다.
또, “doc”라는 명령어를 이용해 볼 수도 있다. “doc” 명령어를 이용하면 조금 더 문서화된 형태의 설명을 볼 수 있으며 그림 자료도 충실히 갖춰져있어서 시각적으로도 쉽게 이해할 수 있다. 아래와 같은 명령어를 입력해보자.
>> doc plot
같은 함수에 대한 설명이지만 글로만 되어 있는 설명보다는 확실히 이해에 도움을 더 준다고 할 수 있겠다.
스크립트 사용해보기
Command Window에서 명령어들을 계속해서 입력하다보면 입력해야 하는 양이 늘어나기도 한다. 또, 입력 과정에서 실수할 수 있기 때문에 신경써서 명령어를 입력해주어야 할 것이다. 많은 양의 명령어를 한꺼번에 수행하기 위해선 텍스트 파일의 형식으로 명령어들을 미리 작성해둘 필요가 있다. 또, 다른 사람에게 명령어 리스트들과 그 순서를 공유하기 위해서도 텍스트 파일의 형식으로 명령어들을 미리 작성해둘 수 있어야 한다. 이런 업무를 원활하게 수행하기 위해 “스크립트” 기능이 제공된다.
라이브 스크립트와 m-file 스크립트
MALTAB에서 스크립트는 크게 두 종류가 있다. 라이브 스크립트(live script, mlx 파일)와 m-file 스크립트 (script, m 파일)이다. 라이브 스크립트는 여러가지 text format을 이용해 텍스트를 작성하거나 수식을 넣을 수 있고, 명령어 결과물을 시각적으로 확인할 수 있게 스크립트 화면에 붙여둘 수 있다. 반면, m-file 스크립트는 확장자가 “m”으로 저장되는 텍스트 형식의 스크립트로써 주석(% 및 %%)을 이용하여 텍스트를 표현할 수 박에 없고, 시각적인 자료들을 화면에 붙일 수 없다.
라이브 스크립트는 시각적으로 훌륭할 뿐만 아니라 아래 예시와 같이 slider 같은 툴들을 이용해 유저와의 상호작용도 수행할 수 있다.
이 외에도 MathWorks 홈페이지에서 라이브 스크립트를 이용한 다양한 활용 예시를 확인할 수 있다.
라이브 스크립트를 사용할지 m-file 스크립트를 사용할지는 사용 목적과 취향에 따라 결정하자. 참고로 라이브 스크립트로 스크립트를 작성했다고 하더라도 m-file 스크립트 형태로 저장하여 형식을 변환할 수 있다.
라이브 스크립트 본격 맛보기
이전에 Command Window에서 수행한 명령을 스크립트에 모아 사용해보자. Home 탭의 “New Live Script”를 클릭하자.
“Live Editor” 탭의 “Text” 버튼을 누르면 원하는 형태의 Text를 작성할 수 있다.
또, “Live Editor” 탭의 “Code” 버튼을 누르면 코드를 입력할 수 있다.
“Text” 버튼과 “Code” 버튼을 이용해 아래와 같이 스크립트를 작성해보자.
스크립트를 작동시키는 방법은 크게 두 가지인데, 현재 섹션 내의 코드만 구동하는 방법과 스크립트 전체 코드를 구동시키는 방법이 있다. 아래 그림에서 ①이라고 표시된 아이콘을 클릭하면 현재 섹션 내의 코드만 구동하고 ②라고 표시된 아이콘을 클릭하면 전체 스크립트의 코드가 구동된다. 지금은 둘 중의 아무거나 눌러서 mat 파일을 불러오기 위한 명령어가 실행되는지 확인해보자.
이제 Workspace에 “year1”, “price1”, “price2”의 세 개의 변수가 들어오게 되는 것을 알 수 있다. 쭉 이어 이전 실습에서 수행해왔던 그래프 그리기를 수행하기 위한 코드를 스크립트에 작성한 뒤 “Run” 버튼을 눌러 결과를 확인해보자.
m-file 스크립트 본격 맛보기
이번에는 전통적인(?) m-file 스크립트를 이용해보자. m-file 스크립트에서는 text format을 사용할 수 없고 오직 주석(%, %%)만을 이용해 text를 작성하거나 섹션을 구분한다. HOME 탭의 “New Script” 버튼을 눌러 m-file을 수정하기 위한 에디터를 열자.
m-file 에디터에는 아래와 같이 입력해보자. 퍼센트 표시(%)를 두개 입력하면 섹션을 구분한다는 의미가 된다. 퍼센트 표시 하나를 입력하면 일반 주석이 된다. 주석은 컴퓨터가 코드를 구동할 때 읽지 않고 넘어가는 부분으로 스크립트를 작성할 때 설명을 위한 텍스트를 입력하는 경우가 대부분이다.
%% Loading my matfile
% 여기서는 mat 파일을 불러오겠습니다.
load("my_matfile.mat");
%% Plot graphs
plot(year1, price1);
hold on;
plot(year1, price2);
xlabel("year");
ylabel("price");
라이브 스크립트에서와 마찬가지로 섹션 별로 코드를 구동하거나 전체 코드를 구동할 수 있다. 구동하고자 하는 섹션에서 “Run Section” 버튼을 누르면 해당 섹션이 구동되고, “Run” 버튼을 누르면 전체 스크립트를 실행할 수 있다. 아무 이름으로나 이 스크립트를 “m” 파일로 저장하고 “Run” 버튼을 눌러 코드를 실행해보자.
아래 그림에서는 “my_first_m_file.m”으로 저장된 스크립트를 실행한 결과를 보여주고 있다.